package com.crm.user.service;

import java.util.List;

import com.crm.sys.model.Department;
import com.crm.sys.model.Role;
import com.crm.user.model.UserAccount;
import com.crm.user.model.UserInfo;
import com.crm.util.Pager;

public interface UserService {
	/**
	 * 给个人qq发送通知消息
	 * @param uid
	 * @param msg
	 */
	public void sendMsgToQQ(Long uid,String msg);
	/**
	 * 验证登陆用户
	 * @param user
	 * @return
	 * @throws Exception
	 */
	 public UserAccount validateLoginUser(UserAccount user) throws Exception;
	 /**
	  * 验证用户名是否被占用
	  * @param account
	  * @return
	  */
	 public boolean validateUserAccount(String account) ;
	 /**
	  * 取得所有用户
	  * @return
	  */
	 public List<UserInfo> getAllUser();
	 /**
	  * 保存用户
	  * @param user
	  * @return
	  */
	 public boolean saveUser(UserAccount user);
	 /**
	  * 保存用户基本信息
	  * @param uinfo
	  * @return
	  */
	 public boolean saveUserInfo(UserInfo uinfo);
		/**
		 * 根据用户账号ID查询用户基本信息
		 * @param id
		 * @return
		 */
		public UserInfo getUserInfo(Long id);
		/**
		 * 根据ID查询用户账号信息
		 * @param id
		 * @return
		 */
		public UserAccount getUserAccountInfoById(Long id);
		/**
		 * 账号管理
		 * @param userinfo
		 * @return
		 */
		public int updatePassword(UserAccount useraccount,String password,String upwd);
		/**
		 *  用户查询
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public Pager getUserList(UserInfo user, int pageNo, int pageSize) ;
		/**
		 *  用户绑定角色列表的查询
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public List<Role> getRole(Role role);
		/**
		 *  用户绑定角色保存
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public int saveRole(String uid,String rid);
		/**
		 *  用户修改的ID查询
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public UserInfo getUserByid(Long aid);
		/**
		 *  用户修改的保存
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public int saveUserByid(UserInfo user);
		/**
		 *  用户绑定行业
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public int saveCalling (String uid,String callingid);
		/**
		 *  查询显示通讯录(根据部门显示)
		 * @param response
		 * @param request
		 * @param redirectAttributes
		 * @return
		 * @throws Exception
		 */
		public List<Department> getDeptUserList(Department dt);
		/**
		 * 根据部门ID查询出部门下所有用户列表
		 * @return
		 */
		public List<UserInfo> getUserListByDeptId(Long deptId);
		/**
		 * 删除用户
		 * @param ua
		 * @return
		 */
		public int deleteUserAccount(String aids,String uid);
		/**
		 * 获取该用户部门下所有用户列表（包含子列表）
		 * */
		public List<UserInfo> getAllUserListByDeptId(Long deptId);
		/**
		 * 更新用户信息
		 * */
		public int updateUserInfo(UserInfo ui);
		/**
		 * 重置密码
		 * */
		public int resetUserPwd(UserAccount ua);
		/**
		 * 获取带有部门的用户列表
		 * */
		public List<UserInfo> getUserInfoListWithDept();
	
}
